package com.zhehekeji.opsys.api.service.manager;

import com.zhehekeji.opsys.api.resp.DateReportButtonLogListResp;
import com.zhehekeji.opsys.api.resp.DateReportListResp;
import com.zhehekeji.opsys.api.resp.DateReportOrderLogListResp;
import com.zhehekeji.opsys.api.resp.DateReportResp;
import com.zhehekeji.opsys.api.resp.DateReportSearchHisListResp;
import com.zhehekeji.opsys.api.resp.DateReportVodTimeListResp;

/**
 * @author chenweiliu chenwei.liu@163.com
 * @ClassName IDataReportService
 * @Description TODO
 * @date 2015-5-29   下午2:56:09
 */
public interface IDataReportService {

    /**
     * @param userID
     * @param stb
     * @param platformType
     * @param cpID
     * @param type
     * @param pageIdentity
     * @param pageName
     * @param buttonIdentity
     * @param buttonName
     * @param provinceIdentity
     * @param provinceName
     * @param parentPageIdentity
     * @param contentCode
     * @param contentName
     * @param categoryCode
     * @param categoryName
     * @return
     * @Title: addVisitLog
     * @Description: 页面访问日志
     */
    public abstract DateReportResp addPageLog(String userID, String stb, int platformType, String cpID, int type,
                                               String pageIdentity, String pageName, String buttonIdentity, String buttonName,
                                               String provinceIdentity, String provinceName, String parentPageIdentity,
                                               String contentCode, String contentName, String categoryCode, String categoryName);
    
    public abstract DateReportResp addButtonLog(String userID, String stb, int platformType, String cpID, int type,
                                               String pageIdentity, String pageName, String buttonIdentity, String buttonName,
                                               String provinceIdentity, String provinceName, String parentPageIdentity,
                                               String contentCode, String contentName, String categoryCode, String categoryName);
    
    public abstract DateReportResp addVisitLog(String userID, String stb, int platformType, String cpID, int type,
									           String pageIdentity, String pageName, String buttonIdentity, String buttonName,
									           String provinceIdentity, String provinceName, String parentPageIdentity,
									           String contentCode, String contentName, String categoryCode, String categoryName,
									           String operatorIdentity, String operatorName, String parentPageName, String utype, 
									           String otype, String originRecommend, String ptype, String resolution);
    
    /**
     * @param userID
     * @param contentCode
     * @param contentName
     * @param cpID
     * @param productCode
     * @param type
     * @param seriesCode
     * @param seriesName
     * @param productName
     * @param category
     * @param resolution  分辨率
     * @param areaID      区域编码
     * @throws
     * @Title: addVodLog
     * @Description: 新增播放次数日志
     */
    public abstract DateReportResp addVodLog(String userID, String contentCode,
                                             String contentName, String cpID, String productCode, int type,
                                             String seriesCode, String seriesName, String productName,
                                             int category, int resolution, String areaID, int epgPlatformType, String stb);

    /**
     * @param userID
     * @param stb
     * @param platformType
     * @param cpID
     * @param type
     * @param pageIdentity
     * @param pageName
     * @param provinceIdentity
     * @param provinceName
     * @param parentPageIdentity
     * @param contentCode
     * @param contentName
     * @param categoryCode
     * @param categoryName
     * @param playTime
     * @param seriesCode
     * @param seriesName
     * @return
     * @Title: addVodTimeLog
     * @Description:新增点播日志
     */
    public abstract DateReportResp addVodTimeLog(String userID, String stb, int platformType, String cpID, int type,
                                                 String pageIdentity, String pageName, String provinceIdentity, String provinceName,
                                                 String parentPageIdentity, String contentCode, String contentName, String categoryCode, String categoryName,
                                                 Long playTime, String seriesCode, String seriesName,String operatorIdentity, String operatorName,String utype,String ptype, String resolution);

    /**
     * @param userID
     * @param stb
     * @param action
     * @param platformType
     * @param cpID
     * @param type
     * @param pageIdentity
     * @param pageName
     * @param provinceIdentity
     * @param provinceName
     * @param parentPageIdentity
     * @param contentCode
     * @param contentName
     * @param categoryCode
     * @param categoryName
     * @param origPrice
     * @param price
     * @return
     * @Title: addOrderLog
     * @Description: 新增订购日志
     */
    public abstract DateReportResp addOrderLog(String userID, String stb, int action, int platformType, String cpID, int type,
                                               String pageIdentity, String pageName,
                                               String provinceIdentity, String provinceName, String parentPageIdentity,
                                               String contentCode, String contentName, String categoryCode, String categoryName,
                                               double origPrice, double price, String operatorIdentity, String operatorName,String ptype, String resolution, String comFrom);

    /**
     * @param userID
     * @param stb
     * @param ip
     * @param productCode
     * @param productName
     * @param cpID
     * @param type
     * @param resolution  分辨率
     * @param areaID      区域编码
     * @throws
     * @Title: addComplainLog
     * @Description: 新增投诉日志
     */
    public abstract DateReportResp addComplainLog(String userID, String stb, String ip,
                                                  String productCode, String productName, String cpID, int type,
                                                  int resolution, String areaID, int epgPlatformType);

    /**
     * @param userID
     * @param contentCode
     * @param contentName
     * @param origPrice
     * @param price
     * @param resolution
     * @param comeFrom
     * @param cpID
     * @param areaID      区域编码
     * @throws
     * @Title: addPPVOrderLog
     * @Description: PPV订购上报
     */
    public abstract DateReportResp addPPVOrderLog(String userID, String contentCode, String contentName,
                                                  double origPrice, double price, int resolution, int comeFrom, String cpID,
                                                  String areaID, String productCode, String productName, int epgPlatformType, String stb);

    /**
     * @param userID
     * @param homepageCode
     * @param homepageName
     * @param location
     * @param resolution
     * @param cpID
     * @param areaID
     * @param epgPlatformType
     * @param stb
     * @return
     * @Title: addHomepageLog
     * @Description: 首页推荐位上报
     */
    public DateReportResp addHomepageLog(String userID, String homepageCode, String homepageName,
                                         String location, int resolution, String cpID, String areaID, int epgPlatformType, String stb);

	public DateReportListResp getPageLogList(String stb, String userID, int firstIndex, int maxResult);
	public DateReportButtonLogListResp getButtonLogList(String stb, String userID, int firstIndex, int maxResult);
	public DateReportResp addVisitLog(String userID, String stb, String cpID, int type,
            String productName, String productCode, int resolution, String areaID,
            String provinceIdentity, String provinceName, String parentPageIdentity,
            int epgPlatformType);

	public DateReportVodTimeListResp getVodTimeLogList(String stb, String userID, int firstIndex, int maxResult);

	public DateReportOrderLogListResp getOrderLogList(String stb, String userID, int firstIndex, int maxResult);
	
	public DateReportListResp getPageLogListhn(String stb, String userID, int firstIndex, int maxResult);
	public DateReportButtonLogListResp getButtonLogListhn(String stb, String userID, int firstIndex, int maxResult);
	
	public DateReportResp addSearchHisLog(String userID, String key, String code, String name, String pageNo, String poster, String operatorIdentity, String operatorName, String resolution);
	public DateReportSearchHisListResp getSearchHisList(String userID, int maxResult);

}